Python命名空间

37次阅读
没有评论

共计 557 个字符,预计需要花费 2 分钟才能阅读完成。

基本概念

命名空间指的是变量存储的位置,每一个变量都需要存储到指定的命名空间当中。每一个作用域都会有一个对应的命名空间。

全局命名空间,用来保存全局变量,函数命名空间用来保存函数中的变量。

命名空间实际上就是一个字典,是一个专门用来存储变量的字典。

使用及示例

locals() 用来获取当前作用域的命名空间。如果在全局作用域中调用 locals() 则获取全局命名空间,如果在函数作用域中调用 locals() 则获取函数命名空间,返回的是一个字典。

globals() 用来在任意位置获取全局命名空间。

scope = locals()  # h 获取当前作用域的命名空间
print(scope)

scope['a'] = 100  # 相当于在全局中创建了 a 变量
print(scope)

def fn():
    a = 10
    scope = locals()  # 获取函数的命名空间
    print(scope)  # {'a': 10}

fn()

print(globals())  # 在任意位置获取全局命名空间 

LEGB 规则

Python 在查找“名称”时,是按照 LEGB 规则查找的:Local→Enclosed→Global→Built in

  • Local 指函数或者类的方法内部
  • Enclosed 指嵌套函数 (一个函数包裹另一个函数,闭包)
  • Global 指模块中全局变量
  • Buit in 指 Python 为自己保留的特殊名称

正文完
 0
三毛笔记
版权声明:本站原创文章,由 三毛笔记 于2023-10-27发表,共计557字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)